﻿#region 참조 네임스페이스

using System.Net.Sockets;

#endregion

namespace Skying.Net.Sockets
{
	/// <summary>
	/// <see cref="BaseSocket"/>에서 <see cref="System.Net.Sockets.Socket.BeginSend"/>이나 <see cref="System.Net.Sockets.Socket.BeginReceive"/> 메서드가 실행될 때 전달되는 콜백 인자를 정의한다.
	/// </summary>
	public class StateObject
	{
		#region 프로퍼티

		/// <summary>
		/// 데이터 송신의 주체인 클라이언트를 가져온다.
		/// </summary>
		public Socket Client
		{
			get;
			private set;
		}

		/// <summary>
		/// 송수신 데이터 버퍼를 설정하거나 가져온다.
		/// </summary>
		public byte[] Buffer
		{
			get;
			set;
		}

		/// <summary>
		/// 송수신에 대한 헤더를 설정하거나 가져온다.
		/// </summary>
		public Header Header
		{
			get;
			set;
		}

		#endregion

		#region 생성자

		public StateObject(Socket socket)
		{
			this.Client = socket;
		}

		public StateObject(Socket socket, int bufferSize)
			: this(socket)
		{
			this.Buffer = new byte[bufferSize];
		}

		#endregion
	}
}